package com.monkeyboy.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * 作用：
 * 常用的一些工具类方法
 * 如：获取时间戳，随机字符串
 * @author Gavin
 * @time:2018年7月6日
 */
public class CommonUtil {
	/**
	 * 作用： 生成任意长度的随机字符串
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @param length
	 * @return
	 */
	public static String getRandomString(int length) {
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; ++i) {
			int number = random.nextInt(3);
			long result = 0;
			switch (number) {
			case 0:
				result = Math.round(Math.random() * 25 + 65);
				sb.append(String.valueOf((char) result));
				break;
			case 1:
				result = Math.round(Math.random() * 25 + 97);
				sb.append(String.valueOf((char) result));
				break;
			case 2:
				sb.append(String.valueOf(new Random().nextInt(10)));
				break;
			}
		}

		return sb.toString();
	}
	/**
	 * 作用： 可以来标识一个订单，也用做 nonce_str 随机字符串生成：UUID
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @return
	 */
	public static String generateUUID() {
		return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
	}
	/**
	 * 作用： 时间戳精确到秒
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @return
	 */
	public static String getCurrTimeToSecond() {
		Date now = new Date();
		SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		String s = outFormat.format(now);
		return s;
	}

	/**
	 * 作用： 得到时间戳 格式化的时间戳，精确到毫秒
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @return
	 */
	public static String getCurrTimeToMillisecond() {
		Date now = new Date();
		SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		String s = outFormat.format(now);
		return s;
	}

	/**
	 * 作用： 获取当前时间戳 单位:秒
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @return
	 */
	public static long getCurrentTimestamp() {
		return System.currentTimeMillis() / 1000;
	}

	/**
	 * 作用： 获取当前时间戳 单位:毫秒
	 * 
	 * @Author:Gavin
	 * @time:2018年6月23日
	 * @return
	 */
	public static long getCurrentTimestampMs() {
		return System.currentTimeMillis();
	}
}
